package gui;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Point;
import java.awt.Rectangle;

import javax.swing.BorderFactory;
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.WindowConstants;

import negocios.Fachada;
import negocios.Operacoes;
import negocios.Produto;

public class CadastroDeFTO1 extends JDialog {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JScrollPane jScrollPaneOperPrep = null;
	private JList lstOperPrep = null;
	private JScrollPane jScrollPaneOperPrepRecebe = null;
	private JList lstOperPrepRecebe = null;
	private JButton badd = null;
	private JButton bretirar = null;
	private JButton bNext = null;
	private JLabel lEtapa = null;
	private JLabel lPoduto = null;
	private static JTextField tProduto = null;
	private JButton bPesq = null;
	private Operacoes[] operacoes = null;
	private static Produto produto = null;  //  @jve:decl-index=0:
	/**
	 * @param owner
	 */
	public CadastroDeFTO1(Frame owner) {
		super(owner);
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(518, 321);
		this.setContentPane(getJContentPane());
		this.setTitle("SIG CONFEX - CADASTRO DE FICHA TECNICA OPERACIONAL");
		this.setModal(true);
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		this.setContentPane(getJContentPane());
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			lPoduto = new JLabel();
			lPoduto.setBounds(new Rectangle(18, 11, 68, 16));
			lPoduto.setText("Produto:");
			lEtapa = new JLabel();
			lEtapa.setBounds(new Rectangle(187, 40, 119, 26));
			lEtapa.setFont(new Font("Dialog", Font.BOLD, 18));
			lEtapa.setText("Preparacao");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.setFont(new Font("Dialog", Font.PLAIN, 12));
			jContentPane.add(getJScrollPaneOperPrep(), null);
			jContentPane.add(getJScrollPaneOperPrepRecebe(), null);
			jContentPane.add(getBadd(), null);
			jContentPane.add(getBretirar(), null);
			jContentPane.add(getBNext(), null);
			jContentPane.add(lEtapa, null);
			jContentPane.add(lPoduto, null);
			jContentPane.add(getTProduto(), null);
			jContentPane.add(getBPesq(), null);
		}
		return jContentPane;
	}

	/**
	 * This method initializes jScrollPaneOperPrep	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPaneOperPrep() {
		if (jScrollPaneOperPrep == null) {
			jScrollPaneOperPrep = new JScrollPane();
			jScrollPaneOperPrep.setBounds(new Rectangle(5, 76, 193, 174));
			jScrollPaneOperPrep.setBorder(BorderFactory.createLineBorder(Color.gray, 1));
			jScrollPaneOperPrep.setViewportView(getLstOperPrep());
		}
		return jScrollPaneOperPrep;
	}

	/**
	 * This method initializes lstOperPrep	
	 * 	
	 * @return javax.swing.JList	
	 */
	private JList getLstOperPrep() {
		if (lstOperPrep == null) {			
			lstOperPrep = new JList();
			lstOperPrep.setVisibleRowCount(5);
			lstOperPrep.setBounds(new Rectangle(0, 0, 158, 153));
			lstOperPrep.setToolTipText("Selecione aqui as operacoes presentes neste produto.");
			lstOperPrep.setBackground(Color.white);
			lstOperPrep.setModel(new DefaultListModel());
			((DefaultListModel) (lstOperPrep.getModel())).clear();			
			operacoes = Fachada.getInstancia().listarOperacao(null, "listar");
			for (int i = 0; i < operacoes.length; i++) {
		
				((DefaultListModel) (lstOperPrep.getModel())).addElement(operacoes[i].getDescricao());
			
			}
			
		}
		return lstOperPrep;
	}

	/**
	 * This method initializes jScrollPaneOperPrepRecebe	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPaneOperPrepRecebe() {
		if (jScrollPaneOperPrepRecebe == null) {
			jScrollPaneOperPrepRecebe = new JScrollPane();
			jScrollPaneOperPrepRecebe.setBorder(BorderFactory.createLineBorder(Color.gray, 1));
			jScrollPaneOperPrepRecebe.setLocation(new Point(305, 76));
			jScrollPaneOperPrepRecebe.setSize(new Dimension(193, 174));
			jScrollPaneOperPrepRecebe.setViewportView(getLstOperPrepRecebe());
		}
		return jScrollPaneOperPrepRecebe;
	}

	/**
	 * This method initializes lstOperPrepRecebe	
	 * 	
	 * @return javax.swing.JList	
	 */
	private JList getLstOperPrepRecebe() {
		if (lstOperPrepRecebe == null) {
			lstOperPrepRecebe = new JList();
			lstOperPrepRecebe.setSize(new Dimension(160, 155));
			lstOperPrepRecebe.setVisibleRowCount(5);
			lstOperPrepRecebe.setToolTipText("Retire alguma operacao, caso tenha a colocado indevidamente.");
			lstOperPrepRecebe.setModel(new DefaultListModel());
			lstOperPrepRecebe.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
			lstOperPrepRecebe.setBackground(Color.white);
		}
		return lstOperPrepRecebe;
	}

	/**
	 * This method initializes badd	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBadd() {
		if (badd == null) {
			badd = new JButton();
			badd.setBounds(new Rectangle(208, 113, 86, 20));
			badd.setToolTipText("Clique aqui para adicionar a/as operacoes selecionadas.");
			badd.setText(">>");
			badd.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					//lstOperPrepRecebe.setListData(lstOperPrep.getSelectedValues());
					Object[] ob = lstOperPrep.getSelectedValues();	
					int[] indexes = lstOperPrep.getSelectedIndices();
					for(int i=0;i<ob.length;i++){
					((DefaultListModel) (lstOperPrepRecebe.getModel())).addElement(ob[i]);
					((DefaultListModel) (lstOperPrep.getModel())).removeElementAt(indexes[i]);
					}
				}
			});
		}
		return badd;
	}

	/**
	 * This method initializes bretirar	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBretirar() {
		if (bretirar == null) {
			bretirar = new JButton();
			bretirar.setText("<<");
			bretirar.setSize(new Dimension(86, 20));
			bretirar.setToolTipText("Clique aqui para remover operacoes colocadas indevidamente.");
			bretirar.setLocation(new Point(208, 170));
			bretirar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					((DefaultListModel) (lstOperPrep.getModel())).addElement(lstOperPrepRecebe.getSelectedValue());
					((DefaultListModel) (lstOperPrepRecebe.getModel())).removeElement(lstOperPrepRecebe.getSelectedValue());
					
				}
			});
		}
		return bretirar;
	}

	/**
	 * This method initializes bNext	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBNext() {
		if (bNext == null) {
			bNext = new JButton();
			bNext.setBounds(new Rectangle(406, 262, 93, 20));
			bNext.setToolTipText("Clique aqui para ir para a proxima etapa da ficha.");
			bNext.setText("Next >>");
			bNext.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					//Pega os items da segunda JList
					Object[] opers = ((DefaultListModel) (lstOperPrepRecebe.getModel())).toArray();
					Operacoes[] ops = new Operacoes[opers.length];
					//Converte os elementos da JList em um Array de Operacoes;
					for(int i = 0;i<opers.length;i++){
						Operacoes o = new Operacoes();
						o.setDescricao(opers[i].toString());
						ops[i] = Fachada.getInstancia().ConsultarOperacao(o, false);
					}				
					System.out.println(ops[0].getCodigo());
					CadastroDeFTO2 seguinte = new CadastroDeFTO2(null,produto,ops);
					dispose();
					seguinte.setVisible(true);
					
				}
			});
		}
		return bNext;
	}

	/**
	 * This method initializes tProduto	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTProduto() {
		if (tProduto == null) {
			tProduto = new JTextField();
			tProduto.setLocation(new Point(95, 10));
			tProduto.setEnabled(false);
			tProduto.setSize(new Dimension(211, 26));
		}
		return tProduto;
	}

	/**
	 * This method initializes bPesq	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBPesq() {
		if (bPesq == null) {
			bPesq = new JButton();
			bPesq.setBounds(new Rectangle(312, 5, 38, 32));
			bPesq.setEnabled(true);
			bPesq.setBackground(new Color(238, 238, 238));
			bPesq.setIcon(new ImageIcon(getClass().getResource("/imagensGui/Magnifying Glass.png")));
			bPesq.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					FindProduto pesquisa = new FindProduto(null);
					pesquisa.setVisible(true);
					
				}
			});
		}
		return bPesq;
	}
 public static void setProduto(Produto desc){
	 tProduto.setText(desc.getDescricao());
	 produto = desc;	 
	 }
}  //  @jve:decl-index=0:visual-constraint="10,10"
